package com.cskaoyan.javase.oop2._1extend._0introduction._0old;

/**
 * @description: 继承的引入
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * > 饭前小甜点
 * > 根据我们刚刚学过的知识，完成如下练习：
 * - 分别定义一个表示人和学生的类
 *   - 人类：有姓名属性，以及吃饭这个行为
 *   - 学生类：有姓名，学号两个属性，同时有吃饭，学习两种行为
 *   - 教师类：有姓名，教师号两个属性，同时有吃饭，教学两种行为
 * - 代码有什么问题？
 * 在这三个类中,明显有一些成员是重复的,比如name和eat()等,既然有重复的,就希望能够复用它们
 * 想要复用这些成员,就必须使用继承
 *
 * 继承的语法:
 *      在定义一个class时,该类可以选择去继承另外一个类,使用如下语法
 *      [各种修饰符] class 类名 extends 另外一个已经定义好的类/被继承的类{
 *          //类体
 *      }
 * 继承的含义:
 *      1,我们把继承这个类的类称之为子类,被继承的类称之为父类
 *      2,子类会得到父类的所有成员
 *      3,父类中没有的成员,子类不能继承
 *      4,子类在继承父类的基础上还能再定义属于自身的成员,这叫子类扩展了父类(子类往往比父类更"强大":成员更多)
 *
 */
public class Demo {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.name);
        //s.a
    }
}

class Person {
    String name;

    public void eat() {
        System.out.println("吃饭!");
    }
}

class Student extends Person {
    int stuId;

    public void study() {
        System.out.println("学习");
    }
}

class Teacher extends Person {
    int teacherId;

    public void teach() {
        System.out.println("上课");
    }
}
